GENERALIZACIÓN
(Parametrizada y
no Parametrizada)

“La ciencia siempre busca generalizaciones” (William Ross Ashby)

“Pensamos en generalidades, pero vivimos en detalles” (A.N. Whitehead)

“Uno debe siempre generalizar” (Carl Jacobi)



Semántica

Una expresión genérica es una metaexpresión que permanece activa siempre, durante cualquier proceso de evaluación.

Una expresión genérica puede estar parametrizada o no: Los parámetros de una expresión genérica:
Sintaxis
Justificación

La expresión genérica es la primitiva principal, la más importante. Pertenece al lenguaje y al metalenguaje. Es una expresión y también una metaexpresión. Permite:
Ejemplos de expresiones genéricas no parametrizadas
  1. ⟨( x>5 → (x° = 5) )⟩
    Especifica que, en todo momento, si x es mayor que 5, sustituirlo por 5.

    (x° = 4)
    x // ev. 4
    (x° = 7)
    x // ev. 5
    (x° = "abc") // x se evalúa como "abc"


  2. ⟨( z = x+y )⟩
    Especifica que, en todo momento, z es la suma de x e y.

    (x° = 3)
    (y° = 5)
    z // ev. 8
    (x° = 9)
    z // ev. 14
    (x° = x+1)
    z // ev. 15


  3. (x = 1)
    (y = ⟨(x 2*x 3*x)⟩
    y // ev. (1 2 3)
    (x = 2)
    y // ev. (2 4 6)


  4. (x = 1)
    (y = (a ⟨x⟩ b ⟨x⟩)
    y // ev. (a 1 b 1)
    (x = 2)
    y // ev. (a 2 b 2)


  5. (x = (3 5 7))
    (y = (a ⟨x/1⟩ b ⟨x/2⟩ c ⟨x/3⟩)
    y // ev. (a 3 b 5 c 7)
    (x = (13 15 17))
    y // ev. (a 13 b 15 c 17)

Ejemplos de expresiones genéricas parametrizadas
  1. ⟨a+x+y+b⟩

    Representa a todas las expresiones de la forma a+x+y+b, en donde a y b son constantes y x e y son variables (los parámetros). Por ejemplo:

    a+1+7+b a+33+abc+b a+xxx+17.5+b etc.

  2. ⟨ (x x) ⟩

    Representa a todas las secuencias de dos componentes iguales:

    (a a) (17 17) (a12 a12) etc.

  3. ⟨(x a y) = (x+y x*y)⟩

    Esta expresión se puede leer “para todo x y para todo y”, (x a y) se sustituye por la secuencia (x+y x*y).

    (3 a 4) // ev. (3+4 3*4) ev. (7 12)
    (u a v) // ev. (u+v u*v)


  4. ⟨( f(x y) = (x+y x*y) )⟩

    Esta es la definición de una función de dos parámetros que produce una secuencia de dos componentes.

    f(3 4) // ev. (7 12)
    f(a b) // ev. (a+b a*b)


  5. ⟨( ⟨( f(x) = x+1 )⟩ ←' a>5 → ⟨( f(x) = x+5 )⟩ )⟩
    (a = 4)
    f(0) // ev. 1
    (a = 6)
    f(4) // ev. 9
La función f depende no solo del parámetro x, sino también de una variable a del espacio abstracto. Dependiendo del valor de a en cada momento, la definición de la función varía.

También se podría haber definido así:

⟨( f(x) = (x+1 ←' a>5 → x+5 )⟩


Observaciones
Parámetros restringidos y no restringidos

En una expresión genérica los parámetros pueden ser: Ejemplos:
  1. ⟨( (x y) ← (x+y = 3) )⟩

    Representa a la clase de todas las secuencias de dos componentes que sumen 3:

    (0 3) (1 2) (-4 7) (a 3-a) etc.

  2. ⟨( (x y) ← (xy) )⟩

    Representa a la clase de todas las secuencias de dos componentes distintos entre sí:

    (0 1) (0 2) (1 2) (a b) etc.

Parámetros posicionales y no posicionales

Los parámetros posicionales son los que ocupan siempre el mismo lugar físico dentro de la expresión genérica. Los no posicionales no están sujetos a esta restricción.

Ejemplo de expresión genérica con parámetros posicionales: Ejemplo con parámetros no posicionales: Los parámetros se pueden especificar también de forma tradicional, es decir, encerrados entre paréntesis y al final de un nombre, por ejemplo: En general, los parámetros se pueden especificar de forma mixfija en las expresiones, es decir, se pueden incluir los parámetros en cualquier lugar de una expresión. Por ejemplo,

⟨( (a x b y) = (a ← (x<y) →' b) )⟩
(a 1 b 2) // ev. a
(a 2 b 1) // ev. b



Especificación de transformaciones

Los parámetros se pueden utilizar para especificar transformaciones e incluso para cambiar la semántica de las operaciones.

Ejemplos:
  1. ⟨( (x+y y+z) = x+z )⟩
    (3+4 4+5) // ev. 8


  2. ⟨( x+y = x*y )⟩
    7+8 // ev. 56 (toda suma se transforma en producto)
Una especificación de sustitución puede contener distinto número de parámetros en el lado izquierdo que en el lado derecho, es decir, puede haber reducción o ampliación de parámetros.

Ejemplos:
  1. Reducción.
    ⟨( ((x y) (y z)) = (x z) )⟩
    ((3 4) (4 7) // ev. (3 7)
    (34 47) // ev. 37


  2. Ampliación.
    ⟨( (x a y) = (x y z) )⟩
    (13 a 25) // ev. (13 25 z)

Manipulación de expresiones genéricas

Las expresiones genéricas se pueden manipular igual que cualquier otra expresión: modificarlas, eliminarlas, sumarlas, asignarles atributos, etc.

Ejemplos:
  1. ⟨a+x⟩/(a=7) // ev. ⟨7+x

  2. x⟩+⟨x⟩ // ev. 2*⟨x

  3. ( r = ⟨(x a y)⟩ )
    (a = θ)
    r // ev. ⟨(x y)⟩


  4. ( ⟨(x+y+z)/(x=x)⟩ ≡ ⟨(x+y+z)⟩ )

  5. ⟨(x y a)⟩/(x=θ) // ev. ⟨(y a)⟩ (se elimina un parámetro)

Axiomas
  1. ( ⟨x⟩ ≡ Ω )
    Una expresión genérica constituida por un solo parámetro es equivalente a la expresión universal.

  2. ( ⟨⟩ = θ )
    La expresión genérica vacía es la metaexpresión nula.

Expresiones genéricas de orden superior

Una expresión genérica (parametrizada o no) puede contener otra expresión genérica (parametrizada o no). Ejemplos:
  1. ⟨( g(z) = ⟨( f(x y) = x+y+z )⟩ )⟩
    g(1) // ev. ⟨( f(x y) = x+y+1 )⟩


  2. ⟨( f(x y) = (x*y ⟨( g(z) = z+x+y )⟩ )⟩
    f(3 4) // ev. (12 ⟨( g(z) = z+7 )⟩)
En una expresión genérica parametrizada de orden superior, los parámetros pueden ser ligados o libres: En los dos ejemplos anteriores:
  1. z es un parámetro ligado; x, y son parámetros libres.
  2. x, y son parámetros ligados; z es un parámetro libre.